getwd()
[1] "/Users/christinacomo/Library/CloudStorage/OneDrive-TheUniversityofColoradoDenver/10xVisium/Spatial/raw.data/control1"
infoTable <- tibble(samples, imgs, spotfiles, json, # Add required columns
                    sample = ("Control1"),
                    condition = "Control") # Add additional column
control1 <- ReadVisiumData(infoTable)

── Reading 10x Visium data ──

ℹ Loading matrices:
→   Finished loading expression matrix 1
✔   There are 32285 features and 1321 spots in the expression matrix.
ℹ Loading coordinates:
→   Finished loading coordinates for sample 1
ℹ Collected coordinates for 1321 spots.

── Creating `Seurat` object 
✔ Expression matrices and coordinates are compatible
ℹ Created `Seurat` object
ℹ Created `Staffli` object
✔ Returning a `Seurat` object with 32285 features and 1321 spots
control1 <- ReadVisiumData(infoTable)

── Reading 10x Visium data ──

ℹ Loading matrices:
→   Finished loading expression matrix 1
✔   There are 32285 features and 1321 spots in the expression matrix.
ℹ Loading coordinates:
→   Finished loading coordinates for sample 1
ℹ Collected coordinates for 1321 spots.

── Creating `Seurat` object 
✔ Expression matrices and coordinates are compatible
ℹ Created `Seurat` object
ℹ Created `Staffli` object
✔ Returning a `Seurat` object with 32285 features and 1321 spots
control1
An object of class Seurat 
32285 features across 1321 samples within 1 assay 
Active assay: Spatial (32285 features, 0 variable features)
 1 layer present: counts
spatial_data <- GetStaffli(control1)
control1 <- LoadImages(control1)

── Loading H&E images ──

ℹ Loading image from ./tissue_lowres_image.png
ℹ Scaled image from 589x600 to 400x407 pixels
ℹ Saving loaded H&E images as 'rasters' in Seurat object
ImagePlot(control1)

p <- MapFeaturesSummary(control1, 
                        features = "nFeature_Spatial", 
                        subplot_type = "violin")
p

# Normalize data and find variable features for Visium data
control1 <- control1 |>
  NormalizeData() |>
  FindVariableFeatures(nfeatures = 10000) |>
  ScaleData() |> 
  RunPCA() |> 
  FindNeighbors(reduction = "pca", dims = 1:30) |> 
  FindClusters(verbose = FALSE) |> 
  RunUMAP(reduction = "pca", dims = 1:30)
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Centering and scaling data matrix

  |                                                                                                                       
  |                                                                                                                 |   0%
  |                                                                                                                       
  |===========                                                                                                      |  10%
  |                                                                                                                       
  |=======================                                                                                          |  20%
  |                                                                                                                       
  |==================================                                                                               |  30%
  |                                                                                                                       
  |=============================================                                                                    |  40%
  |                                                                                                                       
  |========================================================                                                         |  50%
  |                                                                                                                       
  |====================================================================                                             |  60%
  |                                                                                                                       
  |===============================================================================                                  |  70%
  |                                                                                                                       
  |==========================================================================================                       |  80%
  |                                                                                                                       
  |======================================================================================================           |  90%
  |                                                                                                                       
  |=================================================================================================================| 100%
PC_ 1 
Positive:  H19, Serpinh1, Igf2, Dlk1, Igfbp4, Col5a1, Itm2a, Col3a1, Lgals1, Cdkn1c 
       Col1a2, Cd63, Rpl4, Postn, Capn6, Rps4x, Col6a1, Dnm3os, Ifitm2, Eln 
       Fstl1, Mdk, Mmp2, Igfbp5, Gpc3, Anxa2, Grb10, Rcn3, Scarf2, Mest 
Negative:  Tuba1a, Rtn1, Elavl3, Sox11, Tubb3, Map1b, Nsg2, Nnat, Tubb2b, Map2 
       Dcx, Stmn2, Foxg1, Crmp1, Islr2, Mapt, Ina, Gpm6a, Celf4, Igfbpl1 
       Kif5c, Fabp7, Gria2, Sept3, Zic1, Cdk5r1, Stmn1, Basp1, Mllt11, Ckb 
PC_ 2 
Positive:  Gm42418, Lars2, Malat1, Cryba4, Cryba2, Mip, Cryaa, Crybb3, Cryba1, Gje1 
       Cryge, Crygf, Gja3, Lim2, Capn3, Crygd, Crygc, Cryga, Crybb1, Crygn 
       Gja8, Crygb, Bfsp1, Grifin, Vit, Prox1os, Bc1, Tmem40, mt-Atp8, Hsf4 
Negative:  Tmsb10, Nrep, Mgp, Igfbp4, Gstm1, Ly6h, Cldn11, Tmsb4x, Cxcl12, Fn1 
       Aldh1a2, Maged2, Atp6v0c, Ndufa4, Snhg11, Serpine2, Foxc1, Rps4x, Lrp1, Id3 
       Col26a1, Col2a1, Grcc10, Mdk, Crym, Cpe, Tsc22d1, Mmp2, Wdr6, Tubb2a 
PC_ 3 
Positive:  Actc1, Myh3, Myl4, Mylpf, Myh8, Tnnt1, 5430431A17Rik, Acta1, Myl1, Tnnt2 
       Tnnt3, Tnni1, Tnnc2, Casq2, Mybph, Myog, Mymk, Sln, Actn2, Tceal7 
       Csrp3, Tnni2, Des, Atp2a1, Meg3, Gm28653, Tnnc1, Ttn, Itgb1bp2, Thbs4 
Negative:  Matn4, Col9a1, Col9a3, Matn1, Col2a1, Foxc1, Cnmd, Gstm1, Mia, Id3 
       Wwp2, Hapln1, Mgp, Col11a1, Acan, Cytl1, Col9a2, Alx1, Gata2, Aldh1a1 
       Gja8, Lim2, Papss2, Fgfr3, Col11a2, Maf, Susd5, Sox9, Mgarp, Gng8 
PC_ 4 
Positive:  Nfib, Gm42418, Lars2, Ibsp, Prrx1, Ccnd2, Pou3f3, Alpl, Nfix, Runx2 
       Aspn, Panx3, Sp7, Pth1r, Ptn, Msx1, Col1a1, Lgals1, Nfia, Pantr1 
       Neurod6, Smpd3, Frzb, Col1a2, Cxcl14, Mmp9, Satb2, Sgms2, Auts2, Sox5 
Negative:  Lim2, Gja3, Gja8, Mip, Cryab, Capn3, Crygf, Crygc, Crygd, Crygn 
       Cryba2, Crygb, Crybb3, Gje1, Crybb1, Cryba4, Cryba1, Bfsp1, Aldh1a1, Cryge 
       Cryaa, Grifin, Cryga, Mgarp, Pla2g7, Clu, Prox1os, Crygs, Trpm3, Hmx1 
PC_ 5 
Positive:  Dcn, Hba-a1, Hbb-bt, Hbb-bs, Col3a1, Hba-a2, Selenop, Apoe, Cxcl12, Lgals1 
       Lum, Hbb-y, Cxcl14, Akap12, Stab1, Col1a2, Tmeff2, Hba-x, Pf4, Foxl2 
       F13a1, Osr1, Lox, Cd248, Cpa3, Col5a1, Cryaa, Cryga, S100a10, Cryge 
Negative:  Col9a3, Col2a1, Susd5, Col9a1, Col11a2, Mia, Acan, Col9a2, Matn1, Hapln1 
       Cnmd, Matn4, Sox9, Gsc, Epcam, Wwp2, Gm13648, Spint2, Cytl1, Slc27a2 
       Cldn9, Gfy, Gstm1, Papss2, Snorc, Fzd9, Atf5, Col11a1, Chad, Cpm 
Computing nearest neighbor graph
Computing SNN
20:05:45 UMAP embedding parameters a = 0.9922 b = 1.112
20:05:45 Read 1321 rows and found 30 numeric columns
20:05:45 Using Annoy for neighbor search, n_neighbors = 30
20:05:45 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:05:45 Writing NN index file to temp file /var/folders/03/fbk073850ml4ww5j08pc82t00000gn/T//RtmpdSPhbF/file3286c1733eb
20:05:45 Searching Annoy index using 1 thread, search_k = 3000
20:05:46 Annoy recall = 100%
20:05:46 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
20:05:47 Initializing from normalized Laplacian + noise (using RSpectra)
20:05:47 Commencing optimization for 500 epochs, with 49348 positive edges
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:05:48 Optimization finished
p1 <- DimPlot(control1)
p2 <- MapLabels(control1, column_name = "seurat_clusters", ncol = 1) &
  theme(legend.position = "right")
p1 + p2

MapLabels(control1, 
          column_name = "seurat_clusters", 
          image_use = "raw", 
          override_plot_dims = TRUE) +
  plot_layout(guides = "collect") &
  guides(fill = guide_legend(override.aes = list(size = 5), 
                             ncol = 2)) &
  theme(legend.position = "right")

saveRDS(control1, "/Users/christinacomo/OneDrive - The University of Colorado Denver/10xVisium/Spatial/RDSfiles/control1.semla.rds")

Control 2

getwd()
[1] "/Users/christinacomo/Library/CloudStorage/OneDrive-TheUniversityofColoradoDenver/Spatial/raw_data/control2"
infoTable <- tibble(samples, imgs, spotfiles, json, # Add required columns
                    sample = ("Control2"),
                    condition = "Control") # Add additional column
Error in tibble(samples, imgs, spotfiles, json, sample = ("Control2"),  : 
  could not find function "tibble"
control2 <- ReadVisiumData(infoTable)

── Reading 10x Visium data ──

ℹ Loading matrices:
→   Finished loading expression matrix 1
✔   There are 32285 features and 1620 spots in the expression matrix.
ℹ Loading coordinates:
→   Finished loading coordinates for sample 1
ℹ Collected coordinates for 1620 spots.

── Creating `Seurat` object 
✔ Expression matrices and coordinates are compatible
ℹ Created `Seurat` object
ℹ Created `Staffli` object
✔ Returning a `Seurat` object with 32285 features and 1620 spots

# Normalize data and find variable features for Visium data
control2 <- control2 |>
  NormalizeData() |>
  FindVariableFeatures(nfeatures = 10000) |>
  ScaleData() |> 
  RunPCA() |> 
  FindNeighbors(reduction = "pca", dims = 1:30) |> 
  FindClusters(verbose = FALSE) |> 
  RunUMAP(reduction = "pca", dims = 1:30)
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Centering and scaling data matrix

  |                                                                                  
  |                                                                            |   0%
  |                                                                                  
  |========                                                                    |  10%
  |                                                                                  
  |===============                                                             |  20%
  |                                                                                  
  |=======================                                                     |  30%
  |                                                                                  
  |==============================                                              |  40%
  |                                                                                  
  |======================================                                      |  50%
  |                                                                                  
  |==============================================                              |  60%
  |                                                                                  
  |=====================================================                       |  70%
  |                                                                                  
  |=============================================================               |  80%
  |                                                                                  
  |====================================================================        |  90%
  |                                                                                  
  |============================================================================| 100%
PC_ 1 
Positive:  H19, Igf2, Lgals1, Serpinh1, Col3a1, Cdkn1c, Col1a2, Col5a1, Postn, Col1a1 
       Igfbp5, Mest, Dlk1, Sparc, Igfbp4, Mdk, Fstl1, Anxa2, Itm2a, Cd63 
       Col5a2, Col6a2, Grb10, Fn1, Mmp2, Col6a1, Col6a3, Fbn2, Capn6, Gpc3 
Negative:  Nsg2, Rtn1, Tubb3, Tuba1a, Crmp1, Stmn3, Stmn2, Mllt11, Tubb2b, Gpm6a 
       Dcx, Map2, Islr2, Nnat, Igfbpl1, Sez6, Dpysl5, Elavl3, Mapt, Sept3 
       Gng3, Foxg1, Uchl1, Ina, Cdk5r1, Tagln3, Apc2, Tbr1, Sox11, Kif21b 
PC_ 2 
Positive:  Gm42418, Lars2, Malat1, Mip, Lim2, Cryba4, Gje1, Gja8, Cryba1, Neurog2 
       Crygf, Capn3, Crygn, Crybb3, Cryba2, Bc1, Bfsp1, Grifin, Gja3, Crygd 
       Crybb1, Crygb, Crygc, Cryaa, Cryge, Vit, Cryga, Aldh1a1, Pla2g7, Crygs 
Negative:  Meg3, Igfbp4, Itm2a, Tmsb10, Fn1, Tpm1, Col26a1, Fbn1, Sulf2, Postn 
       Eln, Rcn3, Dlk1, Mest, Mmp2, Dnm1, Serpinh1, Col5a1, Bmp1, Col3a1 
       Col6a2, Map1lc3a, Anxa2, Tgfbi, Igf2, Ppic, Bgn, Kctd12, Cxcl12, Cdkn1c 
PC_ 3 
Positive:  Col2a1, Col11a1, Nrp2, Id3, Lum, Foxc1, Col9a3, Cldn11, Matn4, Rcn3 
       Col11a2, Aldh1a2, Col8a2, Col12a1, Col9a1, Col16a1, Col1a1, Mgp, Wwp2, Acan 
       Alpl, Pcolce, Olfml3, Hapln1, Prrx2, Crabp1, Sparc, Apod, Hba-a1, Prrx1 
Negative:  Tnnt3, Myh8, Tnnc2, Myl4, Myl1, Myh3, Mybph, Tnnt2, Acta1, Mylpf 
       Tnni2, Actn2, Tnni1, Tceal7, Casq2, Tnnt1, Actc1, Myog, Csrp3, Sln 
       Mustn1, Ttn, Des, Mymk, Cav3, Tnnc1, Itgb1bp2, Cdh15, Synpo2l, Neb 
PC_ 4 
Positive:  Crygd, Crygc, Cryba2, Crygb, Crygf, Cryga, Lim2, Crygn, Crybb1, Cryba4 
       Cryge, Mip, Cryba1, Crybb3, Cryaa, Capn3, Gje1, Bfsp1, Gja3, Gja8 
       Grifin, Aldh1a1, Cryab, Crygs, Pla2g7, Mgarp, Tdrd7, Vit, Crim1, Tmem40 
Negative:  Nfib, Nfia, Tmsb4x, Neurod6, Neurod2, Zbtb18, Nfix, Satb2, Tcf4, Tiam2 
       Gm3764, Fezf2, Pantr1, Sox5, Cntn2, Rnd2, Pou3f3, Cdk2ap1, Abracl, 3110039M20Rik 
       Neurog2, Foxg1, Masp1, Hnrnpab, Lmo1, Zeb2, Eomes, Nrn1, Bcl7a, Mpped1 
PC_ 5 
Positive:  Dcn, Cma1, Cxcl14, Cpa3, Tpsb2, Twist2, Dpt, Agtr2, Selenop, Apoe 
       F13a1, Stab1, Srgn, Col3a1, Hdc, Akap12, Irx1, Lum, Nfib, Osr1 
       Tpsab1, Tcf4, Arhgdib, Tgfbr3, Tmeff2, Hoxd8, Hba-a1, Pf4, Apcdd1, Celf2 
Negative:  Col11a2, Col2a1, Ibsp, Alpl, Col9a3, Col9a2, Wwp2, Mia, Sp7, Gstm1 
       Snorc, Gsc, Sox9, Kazald1, Hapln1, Cnmd, Col22a1, Panx3, Col9a1, Cytl1 
       Frzb, Smpd3, Itga10, Ifitm5, Acan, Col11a1, Fzd9, Sgms2, Epcam, Slc13a5 
Computing nearest neighbor graph
Computing SNN
Warning: The default method for RunUMAP has changed from calling Python UMAP via reticulate to the R-native UWOT using the cosine metric
To use Python UMAP via reticulate, set umap.method to 'umap-learn' and metric to 'correlation'
This message will be shown once per session20:25:07 UMAP embedding parameters a = 0.9922 b = 1.112
20:25:07 Read 1620 rows and found 30 numeric columns
20:25:07 Using Annoy for neighbor search, n_neighbors = 30
20:25:07 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:25:07 Writing NN index file to temp file /var/folders/03/fbk073850ml4ww5j08pc82t00000gn/T//RtmpZMWTJp/file554f7579134d
20:25:07 Searching Annoy index using 1 thread, search_k = 3000
20:25:07 Annoy recall = 100%
20:25:07 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
20:25:07 Initializing from normalized Laplacian + noise (using RSpectra)
20:25:07 Commencing optimization for 500 epochs, with 59462 positive edges
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:25:08 Optimization finished

getwd()
[1] "/Users/christinacomo/Library/CloudStorage/OneDrive-TheUniversityofColoradoDenver/10xVisium/Spatial/raw.data/mutant1"
infoTable <- tibble(samples, imgs, spotfiles, json, # Add required columns
                    sample = ("Mutant1"),
                    condition = "Mutant") # Add additional column
Error: object 'samples' not found
mutant1
An object of class Seurat 
32285 features across 2155 samples within 1 assay 
Active assay: Spatial (32285 features, 0 variable features)
 1 layer present: counts

# Normalize data and find variable features for Visium data
mutant1 <- mutant1 |>
  NormalizeData() |>
  FindVariableFeatures(nfeatures = 10000) |>
  ScaleData() |> 
  RunPCA() |> 
  FindNeighbors(reduction = "pca", dims = 1:30) |> 
  FindClusters(verbose = FALSE) |> 
  RunUMAP(reduction = "pca", dims = 1:30)
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Centering and scaling data matrix

  |                                                                                  
  |                                                                            |   0%
  |                                                                                  
  |========                                                                    |  10%
  |                                                                                  
  |===============                                                             |  20%
  |                                                                                  
  |=======================                                                     |  30%
  |                                                                                  
  |==============================                                              |  40%
  |                                                                                  
  |======================================                                      |  50%
  |                                                                                  
  |==============================================                              |  60%
  |                                                                                  
  |=====================================================                       |  70%
  |                                                                                  
  |=============================================================               |  80%
  |                                                                                  
  |====================================================================        |  90%
  |                                                                                  
  |============================================================================| 100%
PC_ 1 
Positive:  H19, Igf2, Lgals1, Serpinh1, Col1a1, Col3a1, Col1a2, Cdkn1c, Itm2a, Dlk1 
       Sparc, Col5a1, Postn, Mdk, Igfbp4, Anxa2, Igfbp5, Col5a2, Grb10, Mest 
       Cd63, Col6a3, Capn6, Col6a1, Ccnd3, Ifitm2, Fstl1, Plagl1, Rcn3, Fn1 
Negative:  Rtn1, Stmn3, Tuba1a, Tubb3, Nsg2, Crmp1, Tubb2b, Stmn2, Nnat, Map2 
       Uchl1, Mllt11, Gng3, Islr2, Mapt, Igfbpl1, Stmn4, Ina, Dcx, Dpysl5 
       Hist3h2ba, Scg5, Gpm6a, Snrpn, Pcsk1n, Cdk5r1, Sept3, Elavl3, Dner, Fam57b 
PC_ 2 
Positive:  Neurog2, Aldoc, Lhx2, Eomes, Insm1, Gm3764, Pantr1, Gm42418, Fabp7, Foxg1 
       Celsr1, AW047730, Mir9-3hg, Nr2e1, Tcf4, Zbtb18, Ttyh1, C130071C03Rik, Rcor2, Pax6 
       Mip, Sall1, Pou3f3, Ckb, Lim2, Lars2, Gja8, Rnd2, Hes5, Sox3 
Negative:  Meg3, Igfbp4, Col3a1, Fn1, Dlk1, Sulf2, Rcn3, Col1a2, Col5a2, Col5a1 
       Postn, Col26a1, Itm2a, Cxcl12, Cd248, Fbn1, Nenf, Islr, Anxa6, Sparc 
       Ifitm2, Col6a2, Lgals1, Fbln2, Mmp2, Igf2, Selenop, Nid2, Tpm1, Lamb1 
PC_ 3 
Positive:  Foxc1, Cryaa, Crybb1, Crybb3, Cryba1, Crygc, Cryge, Matn4, Cryga, Cryba4 
       Col2a1, Crygb, Cryba2, Col9a1, Alx1, Crygn, Crygf, Lim2, Crygd, Mgp 
       Mip, Col9a3, Dkk3, Aldh1a1, Matn1, Col9a2, Gja8, Mia, Capn3, Mmp2 
Negative:  Acta1, Myh3, Myh8, Mylpf, Actc1, Myl4, Tnnt3, Tnnt1, Tnnc2, Ttn 
       Tnni1, Myl1, Sln, Tnnt2, Tnni2, Tceal7, Actn2, Tnnc1, Myog, Des 
       Myh7, Csrp3, Neb, Mybph, Il17b, Itgb1bp2, Tpm2, Casq2, Klhl41, Ckm 
PC_ 4 
Positive:  Nfib, Neurod6, Neurod2, Tmsb4x, Zbtb18, Tbr1, Gm3764, Nfia, Rnd2, Bhlhe22 
       Tiam2, Eomes, Sox5, Fezf2, Cfl1, Fabp7, Ptn, Insm1, Mn1, Nfix 
       H3f3b, 3110039M20Rik, Foxg1, Mpped1, Satb2, Cntn2, Pantr1, Masp1, Lhx2, Auts2 
Negative:  Lim2, Cryba2, Capn3, Mip, Crygn, Cryba4, Crygd, Crybb1, Crygb, Crygc 
       Gja8, Crygf, Cryba1, Crybb3, Grifin, Cryga, Gje1, Cryge, Gja3, Bfsp1 
       Cryaa, Mgarp, Cryab, Crygs, Aldh1a1, Pla2g7, Prox1os, Tmem40, Chrng, Prox1 
PC_ 5 
Positive:  Wnt7b, Neurod2, Neurod6, Tbr1, Cntn2, Bhlhe22, Prdm8, Slc17a7, Mpped1, Twist2 
       Zbtb18, Cryge, Cryga, Cryaa, Cxcl14, Znrf2, Apcdd1, Crygb, Crygc, Fezf2 
       Fam49a, Cryba1, Crybb3, Abcc8, Sla, Plxna4, Zeb2, Crygf, Crybb1, Tmem132c 
Negative:  Col2a1, Col9a3, Ecel1, Matn1, Zic4, Col11a2, Col11a1, Mia, Cnmd, Hapln1 
       Zic1, Pnoc, Wwp2, Hap1, Col9a2, Acan, Mgp, Zcchc12, Dlx6, Col9a1 
       Dlx1, Zic3, Prdm12, Slc10a4, Isl1, Susd5, Aifm3, Vstm2l, Cytl1, Sox9 
Computing nearest neighbor graph
Computing SNN
20:29:24 UMAP embedding parameters a = 0.9922 b = 1.112
20:29:24 Read 2155 rows and found 30 numeric columns
20:29:24 Using Annoy for neighbor search, n_neighbors = 30
20:29:24 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:29:24 Writing NN index file to temp file /var/folders/03/fbk073850ml4ww5j08pc82t00000gn/T//RtmpZMWTJp/file554f828a716
20:29:24 Searching Annoy index using 1 thread, search_k = 3000
20:29:25 Annoy recall = 100%
20:29:25 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
20:29:25 Initializing from normalized Laplacian + noise (using RSpectra)
20:29:25 Commencing optimization for 500 epochs, with 79378 positive edges
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:29:26 Optimization finished
p1 <- DimPlot(mutant1)
p2 <- MapLabels(mutant1, column_name = "seurat_clusters", ncol = 1) &
  theme(legend.position = "right")
p1 + p2

MapLabels(mutant1, 
          column_name = "seurat_clusters", 
          image_use = "raw", 
          override_plot_dims = TRUE) +
  plot_layout(guides = "collect") &
  guides(fill = guide_legend(override.aes = list(size = 5), 
                             ncol = 2)) &
  theme(legend.position = "right")

getwd()
[1] "/Users/christinacomo/Library/CloudStorage/OneDrive-TheUniversityofColoradoDenver/Spatial/raw_data/mutant2"
mutant2
An object of class Seurat 
32285 features across 1523 samples within 1 assay 
Active assay: Spatial (32285 features, 0 variable features)
 1 layer present: counts

# Normalize data and find variable features for Visium data
mutant2 <- mutant2 |>
  NormalizeData() |>
  FindVariableFeatures(nfeatures = 10000) |>
  ScaleData() |> 
  RunPCA() |> 
  FindNeighbors(reduction = "pca", dims = 1:30) |> 
  FindClusters(verbose = FALSE) |> 
  RunUMAP(reduction = "pca", dims = 1:30)
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Finding variable features for layer counts
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Centering and scaling data matrix

  |                                                                                  
  |                                                                            |   0%
  |                                                                                  
  |========                                                                    |  10%
  |                                                                                  
  |===============                                                             |  20%
  |                                                                                  
  |=======================                                                     |  30%
  |                                                                                  
  |==============================                                              |  40%
  |                                                                                  
  |======================================                                      |  50%
  |                                                                                  
  |==============================================                              |  60%
  |                                                                                  
  |=====================================================                       |  70%
  |                                                                                  
  |=============================================================               |  80%
  |                                                                                  
  |====================================================================        |  90%
  |                                                                                  
  |============================================================================| 100%
PC_ 1 
Positive:  H19, Igf2, Col1a2, Col1a1, Lgals1, Col3a1, Serpinh1, Cdkn1c, Col5a1, Sparc 
       Itm2a, Postn, Col5a2, Igfbp4, Igfbp5, Anxa2, Col6a3, Fstl1, Ifitm2, Cd63 
       Ccnd3, Col6a1, Rcn3, Capn6, Fn1, Dlk1, Grb10, Col6a2, Gpc3, Tpm1 
Negative:  Tubb3, Tuba1a, Rtn1, Nsg2, Stmn3, Tubb2b, Crmp1, Sox11, Elavl3, Stmn2 
       Nnat, Map2, Uchl1, Igfbpl1, Mllt11, Dcx, Ina, Gpm6a, Gng3, Sept3 
       Islr2, Dpysl5, Hist3h2ba, Map1b, Foxg1, Mapt, Cdk5r1, Rundc3a, Tagln3, Scg5 
PC_ 2 
Positive:  Gm42418, Lars2, Pabpc1, Hbb-y, Hba-a2, Hsd3b6, Hba-x, Hba-a1, Malat1, Tent5c 
       Alas2, Hbb-bt, Hbb-bh1, Slc25a37, Hbb-bs, Slc4a1, mt-Atp8, Tcf4, Gypa, Car2 
       Pdzk1ip1, Neurog2, Ccnd2, Bnip3l, Bc1, Nr2e1, Snca, Epb41, Hmgb2, Tspo2 
Negative:  Tmsb10, Meg3, Actg1, Nrep, Igfbp4, Nenf, Ndn, Dlk1, Itm2a, Maged2 
       Lrp1, Dnm1, Col3a1, Serpinh1, Sulf2, Atp6v0c, Mmp2, Reep5, Postn, Ly6h 
       Cfl1, Selenow, Ddost, Nrp2, Fbln2, Itm2c, Col5a1, Bmp1, Cops9, Hspa5 
PC_ 3 
Positive:  Col2a1, Foxc1, Col9a1, Col9a3, Col11a1, Col11a2, Col9a2, Mia, Wwp2, Matn4 
       Mgp, Fgfr2, Matn1, Fgfr3, Hapln1, Cnmd, Sox9, Acan, Susd5, Six2 
       Cytl1, Id3, Sfrp1, H1f0, Scd2, Pkm, Prrx2, Actg1, Rarg, Pkdcc 
Negative:  Ttn, Tnnt2, Tnnc1, Myh3, Tnnt1, Tnni1, Myl4, Myl1, Acta1, Tnnc2 
       Myh8, Actc1, Actn2, Mylpf, Neb, Tnni2, Des, Mybph, Myog, Tnnt3 
       Casq2, Sln, Tceal7, Il17b, Mymk, Csrp3, 5430431A17Rik, Synpo2l, Itgb1bp2, Klhl41 
PC_ 4 
Positive:  Hba-a1, Hbb-bt, Hbb-bs, Hba-a2, Hbb-y, Hba-x, Malat1, Alas2, Hsd3b6, Lars2 
       Gm42418, Slc25a37, Hbb-bh1, Fech, Gypa, Car2, Slc4a1, Blvrb, Bc1, Mkrn1 
       Snca, Pabpc1, Pdzk1ip1, Celf4, Tent5c, March2, Runx1t1, Mapt, Trim10, Sst 
Negative:  Pkm, Ldha, Hmgb2, Scd2, Pgk1, Dbi, Hes5, Igfbp2, Mif, Cryab 
       Dut, Rrm2, Ppp1r14b, Slc2a1, Hes6, Eno1b, Ddr1, Nes, Lhx2, Top2a 
       Uhrf1, H1f0, Ezr, H1fx, Alyref, Myh8, Gldc, Notch1, Tnnt3, Csrp3 
PC_ 5 
Positive:  Nfib, Pantr1, Fabp7, Mir9-3hg, Eomes, Gm3764, Pou3f3, Tmsb4x, Ube2c, Foxg1 
       Epha4, Aldoc, Hnrnpab, Hmgb2, Ttyh1, Abracl, Nfia, Cdk2ap1, Neurod6, Insm1 
       Ccnd2, 3110039M20Rik, Id4, Rnd2, Lhx2, Rrm2, Emx1, Mt1, Nfix, Sox3 
Negative:  Cryba1, Cryaa, Crybb3, Crybb1, Cryga, Cryge, Crygc, Cryba2, Crygb, Lim2 
       Cryba4, Crygd, Crygn, Crygf, Capn3, Gja8, Mip, Aldh1a1, Grifin, Gje1 
       Mgarp, Gja3, Bfsp1, Hmx1, Crygs, Trpm3, Dkk3, Cryab, Atoh7, Tmem40 
Computing nearest neighbor graph
Computing SNN
20:34:16 UMAP embedding parameters a = 0.9922 b = 1.112
20:34:16 Read 1523 rows and found 30 numeric columns
20:34:16 Using Annoy for neighbor search, n_neighbors = 30
20:34:16 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:34:16 Writing NN index file to temp file /var/folders/03/fbk073850ml4ww5j08pc82t00000gn/T//RtmpZMWTJp/file554f60cc6794
20:34:16 Searching Annoy index using 1 thread, search_k = 3000
20:34:17 Annoy recall = 100%
20:34:17 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
20:34:17 Initializing from normalized Laplacian + noise (using RSpectra)
20:34:17 Commencing optimization for 500 epochs, with 54692 positive edges
Using method 'umap'
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
20:34:18 Optimization finished
p1 <- DimPlot(mutant2)

p2 <- MapLabels(mutant2, column_name = "seurat_clusters", ncol = 1) &
  theme(legend.position = "right")
p1 + p2

saveRDS(mutant2, "/Users/christinacomo/OneDrive - The University of Colorado Denver/10xVisium/Spatial/RDSfiles/mutant2.semla.rds")
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKLS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CnNldHdkKCIvVXNlcnMvY2hyaXN0aW5hY29tby9PbmVEcml2ZSAtIFRoZSBVbml2ZXJzaXR5IG9mIENvbG9yYWRvIERlbnZlci8xMHhWaXNpdW0vU3BhdGlhbC9yYXcuZGF0YS9jb250cm9sMS8iKQpnZXR3ZCgpCgpzYW1wbGVzIDwtICgiLi9maWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeC5oNSIpCmltZ3MgPC0gIi4vdGlzc3VlX2xvd3Jlc19pbWFnZS5wbmciCnNwb3RmaWxlcyA8LSAiLi90aXNzdWVfcG9zaXRpb25zX2xpc3QuY3N2Igpqc29uIDwtICIuL3NjYWxlZmFjdG9yc19qc29uLmpzb24iCmBgYAoKYGBge3J9CmluZm9UYWJsZSA8LSB0aWJibGUoc2FtcGxlcywgaW1ncywgc3BvdGZpbGVzLCBqc29uLCAjIEFkZCByZXF1aXJlZCBjb2x1bW5zCiAgICAgICAgICAgICAgICAgICAgc2FtcGxlID0gKCJDb250cm9sMSIpLAogICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9ICJDb250cm9sIikgIyBBZGQgYWRkaXRpb25hbCBjb2x1bW4KYGBgCgpgYGB7cn0KY29udHJvbDEgPC0gUmVhZFZpc2l1bURhdGEoaW5mb1RhYmxlKQpjb250cm9sMQpgYGAKCmBgYHtyfQpzcGF0aWFsX2RhdGEgPC0gR2V0U3RhZmZsaShjb250cm9sMSkKY29udHJvbDEgPC0gTG9hZEltYWdlcyhjb250cm9sMSkKSW1hZ2VQbG90KGNvbnRyb2wxKQpgYGAKCmBgYHtyfQpwIDwtIE1hcEZlYXR1cmVzU3VtbWFyeShjb250cm9sMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gIm5GZWF0dXJlX1NwYXRpYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgc3VicGxvdF90eXBlID0gInZpb2xpbiIpCnAKYGBgCgpgYGB7cn0KIyBOb3JtYWxpemUgZGF0YSBhbmQgZmluZCB2YXJpYWJsZSBmZWF0dXJlcyBmb3IgVmlzaXVtIGRhdGEKY29udHJvbDEgPC0gY29udHJvbDEgfD4KICBOb3JtYWxpemVEYXRhKCkgfD4KICBGaW5kVmFyaWFibGVGZWF0dXJlcyhuZmVhdHVyZXMgPSAxMDAwMCkgfD4KICBTY2FsZURhdGEoKSB8PiAKICBSdW5QQ0EoKSB8PiAKICBGaW5kTmVpZ2hib3JzKHJlZHVjdGlvbiA9ICJwY2EiLCBkaW1zID0gMTozMCkgfD4gCiAgRmluZENsdXN0ZXJzKHZlcmJvc2UgPSBGQUxTRSkgfD4gCiAgUnVuVU1BUChyZWR1Y3Rpb24gPSAicGNhIiwgZGltcyA9IDE6MzApCmBgYAoKYGBge3J9CnAxIDwtIERpbVBsb3QoY29udHJvbDEpCnAyIDwtIE1hcExhYmVscyhjb250cm9sMSwgY29sdW1uX25hbWUgPSAic2V1cmF0X2NsdXN0ZXJzIiwgbmNvbCA9IDEpICYKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiKQpwMSArIHAyCmBgYAoKYGBge3J9Ck1hcExhYmVscyhjb250cm9sMSwgCiAgICAgICAgICBjb2x1bW5fbmFtZSA9ICJzZXVyYXRfY2x1c3RlcnMiLCAKICAgICAgICAgIGltYWdlX3VzZSA9ICJyYXciLCAKICAgICAgICAgIG92ZXJyaWRlX3Bsb3RfZGltcyA9IFRSVUUpICsKICBwbG90X2xheW91dChndWlkZXMgPSAiY29sbGVjdCIpICYKICBndWlkZXMoZmlsbCA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSA1KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNvbCA9IDIpKSAmCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IikKYGBgCmBgYHtyfQpzYXZlUkRTKGNvbnRyb2wxLCAiL1VzZXJzL2NocmlzdGluYWNvbW8vT25lRHJpdmUgLSBUaGUgVW5pdmVyc2l0eSBvZiBDb2xvcmFkbyBEZW52ZXIvMTB4VmlzaXVtL1NwYXRpYWwvUkRTZmlsZXMvY29udHJvbDEuc2VtbGEucmRzIikKYGBgCgojIENvbnRyb2wgMiAKYGBge3J9CmxpYnJhcnkodGliYmxlKQpsaWJyYXJ5KHNlbWxhKQpzZXR3ZCgiL1VzZXJzL2NocmlzdGluYWNvbW8vT25lRHJpdmUgLSBUaGUgVW5pdmVyc2l0eSBvZiBDb2xvcmFkbyBEZW52ZXIvU3BhdGlhbC9yYXdfZGF0YS9jb250cm9sMi8iKQpnZXR3ZCgpCgpzYW1wbGVzIDwtICgiLi9maWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeC5oNSIpCmltZ3MgPC0gIi4vdGlzc3VlX2xvd3Jlc19pbWFnZS5wbmciCnNwb3RmaWxlcyA8LSAiLi90aXNzdWVfcG9zaXRpb25zX2xpc3QuY3N2Igpqc29uIDwtICIuL3NjYWxlZmFjdG9yc19qc29uLmpzb24iCmBgYAoKYGBge3J9CmluZm9UYWJsZSA8LSB0aWJibGUoc2FtcGxlcywgaW1ncywgc3BvdGZpbGVzLCBqc29uLCAjIEFkZCByZXF1aXJlZCBjb2x1bW5zCiAgICAgICAgICAgICAgICAgICAgc2FtcGxlID0gKCJDb250cm9sMiIpLAogICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9ICJDb250cm9sIikgIyBBZGQgYWRkaXRpb25hbCBjb2x1bW4KYGBgCgpgYGB7cn0KY29udHJvbDIgPC0gUmVhZFZpc2l1bURhdGEoaW5mb1RhYmxlKQpgYGAKCmBgYHtyfQpzcGF0aWFsX2RhdGEgPC0gR2V0U3RhZmZsaShjb250cm9sMikKY29udHJvbDIgPC0gTG9hZEltYWdlcyhjb250cm9sMikKSW1hZ2VQbG90KGNvbnRyb2wyKQpgYGAKCmBgYHtyfQpwIDwtIE1hcEZlYXR1cmVzU3VtbWFyeShjb250cm9sMiwgCiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gIm5GZWF0dXJlX1NwYXRpYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgc3VicGxvdF90eXBlID0gInZpb2xpbiIpCnAKYGBgCmBgYHtyfQojIE5vcm1hbGl6ZSBkYXRhIGFuZCBmaW5kIHZhcmlhYmxlIGZlYXR1cmVzIGZvciBWaXNpdW0gZGF0YQpjb250cm9sMiA8LSBjb250cm9sMiB8PgogIE5vcm1hbGl6ZURhdGEoKSB8PgogIEZpbmRWYXJpYWJsZUZlYXR1cmVzKG5mZWF0dXJlcyA9IDEwMDAwKSB8PgogIFNjYWxlRGF0YSgpIHw+IAogIFJ1blBDQSgpIHw+IAogIEZpbmROZWlnaGJvcnMocmVkdWN0aW9uID0gInBjYSIsIGRpbXMgPSAxOjMwKSB8PiAKICBGaW5kQ2x1c3RlcnModmVyYm9zZSA9IEZBTFNFKSB8PiAKICBSdW5VTUFQKHJlZHVjdGlvbiA9ICJwY2EiLCBkaW1zID0gMTozMCkKYGBgCgpgYGB7cn0KcDEgPC0gRGltUGxvdChjb250cm9sMikKcDIgPC0gTWFwTGFiZWxzKGNvbnRyb2wyLCBjb2x1bW5fbmFtZSA9ICJzZXVyYXRfY2x1c3RlcnMiLCBuY29sID0gMSkgJgogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCnAxICsgcDIKYGBgCgpgYGB7cn0KbGlicmFyeShwYXRjaHdvcmspCk1hcExhYmVscyhjb250cm9sMiwgCiAgICAgICAgICBjb2x1bW5fbmFtZSA9ICJzZXVyYXRfY2x1c3RlcnMiLCAKICAgICAgICAgIGltYWdlX3VzZSA9ICJyYXciLCAKICAgICAgICAgIG92ZXJyaWRlX3Bsb3RfZGltcyA9IFRSVUUpICsKICBwbG90X2xheW91dChndWlkZXMgPSAiY29sbGVjdCIpICYKICBndWlkZXMoZmlsbCA9IGd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemUgPSA1KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNvbCA9IDIpKSAmCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IikKYGBgCmBgYHtyfQpzYXZlUkRTKGNvbnRyb2wyLCAiL1VzZXJzL2NocmlzdGluYWNvbW8vT25lRHJpdmUgLSBUaGUgVW5pdmVyc2l0eSBvZiBDb2xvcmFkbyBEZW52ZXIvMTB4VmlzaXVtL1NwYXRpYWwvUkRTZmlsZXMvY29udHJvbDIuc2VtbGEucmRzIikKYGBgCgpgYGB7cn0KCmBgYAoKCmBgYHtyfQpzZXR3ZCgiL1VzZXJzL2NocmlzdGluYWNvbW8vT25lRHJpdmUgLSBUaGUgVW5pdmVyc2l0eSBvZiBDb2xvcmFkbyBEZW52ZXIvMTB4VmlzaXVtL1NwYXRpYWwvcmF3LmRhdGEvbXV0YW50MS8iKQpnZXR3ZCgpCgpzYW1wbGVzIDwtICgiLi9maWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeC5oNSIpCmltZ3MgPC0gIi4vdGlzc3VlX2xvd3Jlc19pbWFnZS5wbmciCnNwb3RmaWxlcyA8LSAiLi90aXNzdWVfcG9zaXRpb25zX2xpc3QuY3N2Igpqc29uIDwtICIuL3NjYWxlZmFjdG9yc19qc29uLmpzb24iCmBgYAoKYGBge3J9CmluZm9UYWJsZSA8LSB0aWJibGUoc2FtcGxlcywgaW1ncywgc3BvdGZpbGVzLCBqc29uLCAjIEFkZCByZXF1aXJlZCBjb2x1bW5zCiAgICAgICAgICAgICAgICAgICAgc2FtcGxlID0gKCJNdXRhbnQxIiksCiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gIk11dGFudCIpICMgQWRkIGFkZGl0aW9uYWwgY29sdW1uCmBgYAoKYGBge3J9Cm11dGFudDEgPC0gUmVhZFZpc2l1bURhdGEoaW5mb1RhYmxlKQptdXRhbnQxCmBgYAoKYGBge3J9CnNwYXRpYWxfZGF0YSA8LSBHZXRTdGFmZmxpKG11dGFudDEpCm11dGFudDEgPC0gTG9hZEltYWdlcyhtdXRhbnQxKQpJbWFnZVBsb3QobXV0YW50MSkKYGBgCgpgYGB7cn0KcCA8LSBNYXBGZWF0dXJlc1N1bW1hcnkobXV0YW50MSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gIm5GZWF0dXJlX1NwYXRpYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgc3VicGxvdF90eXBlID0gInZpb2xpbiIpCnAKYGBgCgpgYGB7cn0KIyBOb3JtYWxpemUgZGF0YSBhbmQgZmluZCB2YXJpYWJsZSBmZWF0dXJlcyBmb3IgVmlzaXVtIGRhdGEKbXV0YW50MSA8LSBtdXRhbnQxIHw+CiAgTm9ybWFsaXplRGF0YSgpIHw+CiAgRmluZFZhcmlhYmxlRmVhdHVyZXMobmZlYXR1cmVzID0gMTAwMDApIHw+CiAgU2NhbGVEYXRhKCkgfD4gCiAgUnVuUENBKCkgfD4gCiAgRmluZE5laWdoYm9ycyhyZWR1Y3Rpb24gPSAicGNhIiwgZGltcyA9IDE6MzApIHw+IAogIEZpbmRDbHVzdGVycyh2ZXJib3NlID0gRkFMU0UpIHw+IAogIFJ1blVNQVAocmVkdWN0aW9uID0gInBjYSIsIGRpbXMgPSAxOjMwKQpgYGAKCmBgYHtyfQpwMSA8LSBEaW1QbG90KG11dGFudDEpCnAyIDwtIE1hcExhYmVscyhtdXRhbnQxLCBjb2x1bW5fbmFtZSA9ICJzZXVyYXRfY2x1c3RlcnMiLCBuY29sID0gMSkgJgogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCnAxICsgcDIKYGBgCgpgYGB7cn0KTWFwTGFiZWxzKG11dGFudDEsIAogICAgICAgICAgY29sdW1uX25hbWUgPSAic2V1cmF0X2NsdXN0ZXJzIiwgCiAgICAgICAgICBpbWFnZV91c2UgPSAicmF3IiwgCiAgICAgICAgICBvdmVycmlkZV9wbG90X2RpbXMgPSBUUlVFKSArCiAgcGxvdF9sYXlvdXQoZ3VpZGVzID0gImNvbGxlY3QiKSAmCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gNSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5jb2wgPSAyKSkgJgogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCmBgYApgYGB7cn0Kc2F2ZVJEUyhtdXRhbnQxLCAiL1VzZXJzL2NocmlzdGluYWNvbW8vT25lRHJpdmUgLSBUaGUgVW5pdmVyc2l0eSBvZiBDb2xvcmFkbyBEZW52ZXIvMTB4VmlzaXVtL1NwYXRpYWwvUkRTZmlsZXMvbXV0YW50MS5zZW1sYS5yZHMiKQpgYGAKCgpgYGB7cn0Kc2V0d2QoIi9Vc2Vycy9jaHJpc3RpbmFjb21vL09uZURyaXZlIC0gVGhlIFVuaXZlcnNpdHkgb2YgQ29sb3JhZG8gRGVudmVyL1NwYXRpYWwvcmF3X2RhdGEvbXV0YW50Mi8iKQpnZXR3ZCgpCgpzYW1wbGVzIDwtICgiLi9maWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeC5oNSIpCmltZ3MgPC0gIi4vdGlzc3VlX2xvd3Jlc19pbWFnZS5wbmciCnNwb3RmaWxlcyA8LSAiLi90aXNzdWVfcG9zaXRpb25zX2xpc3QuY3N2Igpqc29uIDwtICIuL3NjYWxlZmFjdG9yc19qc29uLmpzb24iCmBgYAoKYGBge3J9CmluZm9UYWJsZSA8LSB0aWJibGUoc2FtcGxlcywgaW1ncywgc3BvdGZpbGVzLCBqc29uLCAjIEFkZCByZXF1aXJlZCBjb2x1bW5zCiAgICAgICAgICAgICAgICAgICAgc2FtcGxlID0gKCJNdXRhbnQyIiksCiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gIk11dGFudCIpICMgQWRkIGFkZGl0aW9uYWwgY29sdW1uCmBgYAoKYGBge3J9Cm11dGFudDIgPC0gUmVhZFZpc2l1bURhdGEoaW5mb1RhYmxlKQptdXRhbnQyCmBgYAoKYGBge3J9CnNwYXRpYWxfZGF0YSA8LSBHZXRTdGFmZmxpKG11dGFudDIpCm11dGFudDIgPC0gTG9hZEltYWdlcyhtdXRhbnQyKQpJbWFnZVBsb3QobXV0YW50MikKYGBgCgpgYGB7cn0KcCA8LSBNYXBGZWF0dXJlc1N1bW1hcnkobXV0YW50MiwgCiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gIm5GZWF0dXJlX1NwYXRpYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgc3VicGxvdF90eXBlID0gInZpb2xpbiIpCnAKYGBgCgpgYGB7cn0KIyBOb3JtYWxpemUgZGF0YSBhbmQgZmluZCB2YXJpYWJsZSBmZWF0dXJlcyBmb3IgVmlzaXVtIGRhdGEKbXV0YW50MiA8LSBtdXRhbnQyIHw+CiAgTm9ybWFsaXplRGF0YSgpIHw+CiAgRmluZFZhcmlhYmxlRmVhdHVyZXMobmZlYXR1cmVzID0gMTAwMDApIHw+CiAgU2NhbGVEYXRhKCkgfD4gCiAgUnVuUENBKCkgfD4gCiAgRmluZE5laWdoYm9ycyhyZWR1Y3Rpb24gPSAicGNhIiwgZGltcyA9IDE6MzApIHw+IAogIEZpbmRDbHVzdGVycyh2ZXJib3NlID0gRkFMU0UpIHw+IAogIFJ1blVNQVAocmVkdWN0aW9uID0gInBjYSIsIGRpbXMgPSAxOjMwKQpgYGAKCmBgYHtyfQpwMSA8LSBEaW1QbG90KG11dGFudDIpCnAyIDwtIE1hcExhYmVscyhtdXRhbnQyLCBjb2x1bW5fbmFtZSA9ICJzZXVyYXRfY2x1c3RlcnMiLCBuY29sID0gMSkgJgogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCnAxICsgcDIKYGBgCgpgYGB7cn0KTWFwTGFiZWxzKG11dGFudDIsIAogICAgICAgICAgY29sdW1uX25hbWUgPSAic2V1cmF0X2NsdXN0ZXJzIiwgCiAgICAgICAgICBpbWFnZV91c2UgPSAicmF3IiwgCiAgICAgICAgICBvdmVycmlkZV9wbG90X2RpbXMgPSBUUlVFKSArCiAgcGxvdF9sYXlvdXQoZ3VpZGVzID0gImNvbGxlY3QiKSAmCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplID0gNSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5jb2wgPSAyKSkgJgogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCmBgYApgYGB7cn0Kc2F2ZVJEUyhtdXRhbnQyLCAiL1VzZXJzL2NocmlzdGluYWNvbW8vT25lRHJpdmUgLSBUaGUgVW5pdmVyc2l0eSBvZiBDb2xvcmFkbyBEZW52ZXIvMTB4VmlzaXVtL1NwYXRpYWwvUkRTZmlsZXMvbXV0YW50Mi5zZW1sYS5yZHMiKQpgYGAKCgo=